home *** CD-ROM | disk | FTP | other *** search
- This is a list of new features in XLISP version 2.0 so far.
-
- >>>> Changes for T5:
-
- Fixed some bugs in initialization and in the RESTORE function.
-
- >>>> Changes for T4:
-
- The special form PROGV was added to support establishing
- dynamically scoped variables.
-
- The symbols *ERROR-OUTPUT* and *DEBUG-IO* have been added and
- are bound to streams that are used for error output and debug
- i/o respectively.
-
- The symbol *GC-HOOK* has been added. If it is bound to a function
- of two arguments, that function will be called after the garbage
- collector runs. The two parameters are the total number of nodes
- and the number free after the garbage collection.
-
- A bug in the handling of *GC-FLAG* has been fixed. It sometimes
- caused symbols that were 'under construction' during a call to
- the garbage collector to get corrupted.
-
- >>>> Changes for T3:
-
- The following symbols preserve a history of values used by the
- read-eval-print loop:
-
- - the current input expression
- + the last expression read
- ++ the previous value of +
- +++ the previous value of ++
- * the result of the last evaluation
- ** the previous value of *
- *** the previous value of **
-
- Changed the default value of *print-case* to :upcase.
-
- Added macros to xlisp.ini for:
-
- (defvar sym &optional val)
- (defparameter sym val)
- (defconstant sym val)
-
- Macintosh specific T3 changes:
-
- Fixed a bug in the EXP function.
-
- >>>> Changes for T2:
-
- The global symbol *PRINT-CASE* was added to control the output case of
- symbols. Its default value is :DOWNCASE which will cause symbols to
- be printed in lowercase. You can change it to :UPCASE to get symbols
- to print in uppercase (as they did in previous XLISP releases).
-
- *BREAKENABLE* will again override ERRSET to make it possible to debug
- programs that use ERRSET. I changed this behavior for T1, but have
- since reconsidered due to some input from an XLISP user.
-
- I have added the functions FIRST, SECOND, THIRD, FOURTH and REST as
- synonyms for CAR, CADR, CADDR, CADDDR and CDR.
-
- I fixed a bug in the reader which caused strange results to occur when
- reading a list with an embedded comment.
-
- Macintosh specific T2 changes:
-
- Added the function (COMMAND-POINT-SIZE <n>) to set the point size for the
- text in the command window. The default point size is now 9.
-
- Fixed a bug in the RANDOM function.
-
- >>>> Changes for T1:
-
- The most important change from version 1.7 to 2.0 of XLISP is that
- it is now possible to save XLISP's workspace between sessions. This
- feature is used by the XLISP system to avoid having lots of initialization
- data stored in the XLISP executable image itself. For this reason,
- the XLISP executable, by itself, is only capable of evaluating two special
- forms. These forms are DEFINE-SUBR and DEFINE-FSUBR. In order to
- initialize XLISP, it is necessary to have the executable image and the
- file "xlisp.ini". This file defines all of the built-in functions and
- special forms and writes out a default workspace file called "xlisp.wks".
-
- To start from scratch with these two files (and possibly a file called
- "osdefs.ini" with system specific definitions), remove any existing copy
- of "xlisp.wks" from the current directory, then start the XLISP executable
- image. It should read in the file "xlisp.ini" and write the file
- "xlisp.wks". After the initial workspace "xlisp.wks" has been created,
- the initialization file "xlisp.ini" is no longer needed. From then on,
- XLISP will read the file "xlisp.wks" during initialization, followed by
- "init.lsp".
-
- The &key lambda list keyword is now supported as are initialization forms
- for &optional, &key and &aux parameters. The supplied-p variables are
- also supported for &optional and &key parameters.
-
- (save filename)
- (restore filename)
- (defstruct symbol [slot-def]...)
- (subseq string start [end])
- (open name &key :direction)
- (vector [expr]...)
- (block name [expr]...)
- (return-from name [value])
- (tagbody [tag|expr]...)
- (psetq [sym value]...)
- (flet ([sym lambda-list [body]...]...) [expr]...)
- (labels ([sym lambda-list [body]...]...) [expr]...)
- (macrolet ([sym lambda-list [body]...]...) [expr]...)
- (unwind-protect expr [expr]...)
- (when test [expr]...)
- (unless test [expr]...)
- (loop [expr]...)
- (pprint expr [stream])
- (string< str1 str2 &key :start1 :end1 :start2 :end2)
- (string= str1 str2 &key :start1 :end1 :start2 :end2)
- (string> str1 str2 &key :start1 :end1 :start2 :end2)
- (string<= str1 str2 &key :start1 :end1 :start2 :end2)
- (string/= str1 str2 &key :start1 :end1 :start2 :end2)
- (string>= str1 str2 &key :start1 :end1 :start2 :end2)
- (string-lessp str1 str2 &key :start1 :end1 :start2 :end2)
- (string-equal str1 str2 &key :start1 :end1 :start2 :end2)
- (string-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
- (string-not-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
- (string-not-equal str1 str2 &key :start1 :end1 :start2 :end2)
- (string-not-lessp str1 str2 &key :start1 :end1 :start2 :end2)
- (string-trim bag string)
- (string-left-trim bag string)
- (string-right-trim bag string)
- (string-upcase string &key :start :end)
- (string-downcase string &key :start :end)
- (nstring-upcase string &key :start :end)
- (nstring-downcase string &key :start :end)
- (symbol-function sym)
- (send obj msg [expr]...)
- (send-super msg [expr]...)
- (integerp expr)
- (floatp expr)
- (stringp expr)
- (arrayp expr)
- (streamp expr)
- (objectp expr)
- (fboundp expr)
-
-
- These symbols control the format in which numbers are printed. They
- should be set to printf format strings.
-
- *integer-format* (default is "%d" or "%ld")
- *float-format* (default is "%g")
-
-
- (substr string start [length]) is replaced by:
- (subseq string start [end])
-
-
- (openi name) is replaced by: (open name :direction :input)
- (openo name) is replaced by: (open name :direction :output)
-
-
- OPEN and LOAD take strings as file names, symbols are no longer
- accepted.
-
-
- ERRSET overrides *BREAKENABLE* and traps errors rather than entering
- the break loop.
-
-
- The LAMBDA special form has been removed.
-
-
- Symbols have two value cells, one for normal values and one for
- function values. SETQ sets the normal value, DEFUN sets the
- functional value.
-
-
- The SEND-SUPER function replaces the :SENDSUPER message to objects.
- All messages must be sent using either the SEND function or the
- SEND-SUPER function. In other words, the syntax:
-
- (Class :new '(a b c))
-
- must now be written as:
-
- (send Class :new '(a b c))
-
- and
-
- (self :sendsuper :msg 1 2 3)
-
- must now be written as:
-
- (send-super :msg 1 2 3)
-
- This is because the CAR of a form is no longer evaluated. To get the
- effect of having the function position evaluated, use the FUNCALL form.
-
-
- The syntax of LOAD has changed from:
-
- (load name [verbose-flag [print-flag]])
-
- to:
-
- (load name &key :verbose :print)
-
-
-
- əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə